Zucker SOCの動かし方(とSDRAMの動作確認方法)
from Zucker SOC
#Zucker_SOC #ULX3S #FPGA
ULX3S移植版の Zucker SOC を git clone して、以下のコマンドで「ファームウェアのビルド → FPGAのビットストリームをビルド → ビットストリームのアップロード」を行う。
code:sh
git clone git@github.com:thata/zucker.git
cd zucker
(cd firmware/ && make clean firmware) && BOARD=ulx3s make clean zucker_ecp5_pico prog
現時点ではSDRAMの動作確認用の以下のコードが動いている。LEDへ 2 + 4 + 8 + 16 の結果である 30 が表示されればOK。
https://gyazo.com/a8a1babee72c4c8660a42cf0d4a55710
code:firmware/boot_picorv32.S
// SDRAMへの値の出し入れ
// mem0x4000_0000 = 10
li t1, 0x40000000
li t0, 10
sw t0, 0(t1)
// mem0x4000_0004 = 20
li t1, 0x40000004
li t0, 20
sw t0, 0(t1)
// t2 = mem0x4000_0000
li t1, 0x40000000
lw t2, 0(t1)
// t3 = mem0x4000_0004
li t1, 0x40000004
lw t3, 0(t1)
// t0 = t2 + t3
add t0, t2, t3
// 10 + 20 の結果をLEDに表示
li t1, 0xf0001000 // LEDコントロールレジスタのアドレス
sw t0, 0(t1) // LEDコントロールレジスタへ書き込み
// 無限ループ
foo:
j foo